﻿var _PageSize = 15;
var _PageSizeOptions = ['15', '30', '50'];

function SoloNumeros(e) {
    var theEvent = e.htmlEvent || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /[0-9]/;

    if (!regex.test(key)) {
        theEvent.returnValue = false;
        if (theEvent.preventDefault)
            theEvent.preventDefault();
    }

}
function SumaVarios2(valores, decimales) {
    var Total = 0;

    for (var i = 0; i < valores.length; i++) {
        if ($.trim(valores[i]) !== '') {
            Total = Total + (ValNum(valores[i].valueOf()) * 1);
        } else { Total = Total + 0; }
    }
    return formatNum(roundf(Total, decimales));
};

function RestaVarios2(valores, decimales) {
    var Total = 0;

    for (var i = 0; i < valores.length; i++) {
        if ($.trim(valores[i]) !== '') {
            Total = Total - (ValNum(valores[i].valueOf()) * 1);
        } else { Total = Total + 0; }
    }
    return formatNum(roundf(Total, decimales));
};

function ValNum(input) {
    var num = input.replace(/\,/g, '');
    if (!isNaN(num)) {
        return num;
    }
    else {
        return 0;
    }
};
function roundf(numero, lugares_decimales) {
    var p = Math.pow(10, lugares_decimales);
    return Math.round(numero * p) / p;
}

function formatNum(input) {
    input = input + ' ';
    var num = $.trim(input).replace(/\,/g, '');
    cents = "";
    posicion = num.indexOf('.');

    if (!isNaN(num)) {
        if (posicion != -1) {
            punto = ".";
            cents = num.substring(posicion);
            if (cents.length >= 5) cents = cents.substring(0, 3);
        }
        num = num.split('.')[0];
        num = num.toString().split('').reverse().join('').replace(/(?=\d*\,?)(\d{3})/g, '$1,');
        num = num.split('').reverse().join('').replace(/^[\,]/, '');
        return num + cents;
    }
    else {
        return $.trim(input).replace(/[^\d\,]*/g, '');
    }
};

function format(input) {
    var num = input.value.replace(/\,/g, '');
    cents = "";
    posicion = num.indexOf('.');
    var NumCero = 0;
    var key = window.event.keyCode;
    if (!(key == 9 || key == 16)) {
        if (!isNaN(num)) {
            if (posicion != -1) {
                punto = ".";
                cents = num.substring(posicion);
                if (cents.length >= 5) cents = cents.substring(0, 3);
            }
            num = num.split('.')[0];
            NumCero = num * 1;
            num = $.trim(NumCero + ' ');
            num = num.toString().split('').reverse().join('').replace(/(?=\d*\,?)(\d{3})/g, '$1,');
            num = num.split('').reverse().join('').replace(/^[\,]/, '');
            input.value = num + cents;
        }
        else {
            input.value = input.value.replace(/[^\d\,]*/g, '');
        }
    }
};

function SoloNumerosDecimales(e) {
    var theEvent = e.htmlEvent || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /[0-9]|\./;

    if (!regex.test(key)) {
        theEvent.returnValue = false;
        if (theEvent.preventDefault)
            theEvent.preventDefault();
    }

}

function SoloNumerosLetras(e) {
    var theEvent = e.htmlEvent || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /^[A-Za-z0-9 \-]*$/;

    if (!regex.test(key)) {
        theEvent.returnValue = false;
        if (theEvent.preventDefault)
            theEvent.preventDefault();
    }
}

function SoloTexto(e) {
    var theEvent = e.htmlEvent || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /^[A-Za-z0-9ñáíóúé \-\,\.\(\)\:]*$/;

    if (!regex.test(key)) {
        theEvent.returnValue = false;
        if (theEvent.preventDefault)
            theEvent.preventDefault();
    }
}

function MayoraCero(s, e) {
    if (!(e.value > 0)) {
        e.isValid = false;
        e.errorText = "El valor debe ser mayor a cero.";
    }
    else e.isValid = true;
}

function EsEnter(event) {
    return ((event.which || event.charCode || event.keyCode) === 13);
};
function LocalizationJqxGrid() {
    var localizationobj = {};
    //jqx.defaultLocalization = myLocalizationObject;
    localizationobj.pagergotopagestring = "Ir a página:";
    localizationobj.pagershowrowsstring = "Mostrar filas:";
    localizationobj.pagerrangestring = " de ";
    localizationobj.loadtext = "Cargando...";
    localizationobj.emptydatastring = "No hay coincidencias";
    localizationobj.firstDay = 1;
    var days = {
        names: ["Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"],
        // abbreviated day names
        namesAbbr: ["Dom", "Lun", "Mar", "Mier", "Juev", "Vier", "Sab"],
        // shortest day names
        namesShort: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"]
    };
    localizationobj.days = days;
    var months = {
        // full month names (13 months for lunar calendards -- 13th month should be "" if not lunar)
        names: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre", ""],
        // abbreviated month names
        namesAbbr: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic", ""]
    };

    var patterns = {
        d: "dd/MM/yyyy",
        D: "dddd, d. MMMM yyyy",
        t: "HH:mm",
        T: "HH:mm:ss",
        f: "dddd, d. MMMM yyyy HH:mm",
        F: "dddd, d. MMMM yyyy HH:mm:ss",
        M: "dd MMMM",
        Y: "MMMM yyyy"
    }
    localizationobj.patterns = patterns;
    localizationobj.months = months;
    // localizationobj.todaystring = "Hoy";

    return localizationobj;
};

function cToDate(cDate) {

    var _cDate = cDate.split('/');

    return new Date(_cDate[2], _cDate[1] - 1, _cDate[0]);
}

/*
MensajeApp: Mensaje para las aplicaciones
- titulo: Titulo del mensaje
- mensaje: Cuerpo del mensaje
- tipoMensaje: valores -> 'correcto', 'alerta', 'informacion', 'error'
- tipoBotones: valores -> 'Aceptar', 'AceptarCancelar', 'SiNo', 'SiNoCancelar'
- funcion: función callback.
*/
function MensajeApp(titulo, mensaje, tipoMensaje, tipoBotones, funcion) {
    titulo = (!titulo ? "" : titulo);
    mensaje = (!mensaje ? "" : mensaje);
    tipoMensaje = (!tipoMensaje ? "success" : tipoMensaje);
    tipoBotones = (!tipoBotones ? "default" : tipoBotones);
    funcion = (!funcion ? null : funcion);

    var botones = [{ id: 0, label: 'Aceptar', val: '1', image: '' }];
    var claseMsjImagen = "msgSuccess";

    switch (tipoMensaje) {
        case 'alerta':
            titulo = (titulo.length == 0 ? "¡Alerta!" : titulo);
            mensaje = (mensaje.length == 0 ? "La operación se completó correctamente." : mensaje);
            tipoMensaje = "anim warning";
            claseMsjImagen = "msgWarning";
            break;
        case 'error':
            titulo = (titulo.length == 0 ? "¡Error!" : titulo);
            mensaje = (mensaje.length == 0 ? "No se pudo completar la operación, por favor vuelva a intentarlo." : mensaje);
            tipoMensaje = "anim error";
            claseMsjImagen = "msgError";
            break;
        case 'informacion':
            titulo = (titulo.length == 0 ? "Información" : titulo);
            mensaje = (mensaje.length == 0 ? "La operación se completó correctamente." : mensaje);
            tipoMensaje = "info";
            claseMsjImagen = "msgInfo";
            break;
        default:
            titulo = (titulo.length == 0 ? "¡Exito!" : titulo);
            mensaje = (mensaje.length == 0 ? "La operación se completó correctamente." : mensaje);
            break;
    }

    switch (tipoBotones) {
        case 'SiNo':
            botones = [{ id: 0, label: 'Si', val: '1' }, { id: 1, label: 'No', val: '2' }];
            break;
        case 'SiNoCancelar':
            botones = [{ id: 0, label: 'Si', val: '1' }, { id: 1, label: 'No', val: '2' }, { id: 2, label: 'Cancelar', val: '3' }];
            break;
        case 'AceptarCancelar':
            botones = [{ id: 0, label: 'Aceptar', val: '1' }, { id: 1, label: 'Cancelar', val: '2' }];
            break;
        default:
            break;
    }

    var tituloHTML = "<table><tr><td class='" + claseMsjImagen + "'>&nbsp;&nbsp;&nbsp;&nbsp;</td><td>" + titulo + "</td></tr></table>"

    var messi = new Messi(mensaje, { title: tituloHTML, width: '370px', titleClass: tipoMensaje, modal: true, buttons: botones, callback: funcion });
    $(".messi").draggable();

    return false;
}

// PROTOTIPOS:

Array.prototype.getUnique = function () {
    var u = {}, a = [];
    for (var i = 0, l = this.length; i < l; ++i) {
        if (u.hasOwnProperty(this[i])) {
            continue;
        }
        a.push(this[i]);
        u[this[i]] = 1;
    }
    return a;
};

String.prototype.toDate = function () {
    var fecha = this.split("/"),
        d = fecha[0],
        m = fecha[1],
        y = fecha[2],
        temp = [];
    temp.push(y, m, d);
    return (new Date(temp.join("-")));
};